// src\router\index.ts
import { createRouter, createWebHashHistory } from 'vue-router'
import cacheUtils from '@/utils/cacheUtils'

const router = createRouter({
  //  hash 模式。
  history: createWebHashHistory(),
  routes: [
    // 设置首页
    {
      path: '/',
      name: '/',
      //重置到home
      redirect: '/calculator'
    },
    // 设置login
    {
      path: '/login',
      name: 'login',
      component: () => import('@/views/login/index.vue')
    },
    // 设置home
    {
      path: '/home',
      name: 'home',
      component: () => import('@/views/home/index.vue')
    },
    // 设置calculator
    {
      path: '/calculator',
      name: 'calculator',
      component: () => import('@/views/calculator/index.vue')
    }
  ]
})

// 假设这是你的检查用户登录状态的函数
const checkLoginStatus = () => {
  // 这里应该是检查用户登录状态的逻辑
  // 例如，检查 localStorage 中的 token
  // console.log('检查用户登录状态')
  // console.log(cacheUtils.get('userToken'))
  const userToken = cacheUtils.get('userToken')

  if (userToken !== null) {
    return true
  } else {
    console.log('用户未登录')
    return false
  }
}

// 方法：检查并保存日期
const checkAndSaveDate = () => {
  const today = new Date().toISOString().split('T')[0] // 获取今天的日期
  const storedDate = cacheUtils.get('lastVisitedDate')

  if (storedDate !== today) {
    cacheUtils.clearSelf() // 清除全部缓存
    cacheUtils.set('lastVisitedDate', today) // 保存今天的日期
    console.log('日期不匹配，保存今天的日期')
    return false // 返回 false 表示需要重定向
  }
  return true // 返回 true 表示日期匹配
}

// 路由守卫
router.beforeEach((to, _, next) => {
  const isAuthenticated = checkLoginStatus()

  if (!checkAndSaveDate()) {
    // 如果日期不匹配，重定向到登录页面
    next('/login')
  }

  if (to.path === '/login' && isAuthenticated) {
    // 如果用户尝试访问登录页面，但已经登录，则重定向到主页
    console.log('重定向到主页')
    next('/')
  } else if (to.path !== '/login' && !isAuthenticated) {
    // 如果用户尝试访问非登录页面，但未登录，则重定向到登录页面
    console.log('重定向到登录页面')
    next('/login')
  } else {
    // 其他情况，继续正常的导航
    console.log('继续导航')
    next()
  }
})

export default router
